

10 REM ****************************************************************
20 REM * Selftest Audio Analyzer UPL                                  *
30 REM * Rohde & Schwarz   1GPP Betz   03.03.2005                     *
40 REM ****************************************************************
45 UPL OUT "disp:ann off"
50 CLEAR : CLEAR 1
60 MOVE 80,320: LABEL "Selftest Program UPL",2
70 SET 2,3: MOVE 40,230: LABEL "!!! IMPORTANT !!!",3: SET 2,15
80 MOVE 100,170: LABEL "Please remove all cables",1
90 MOVE 100,140: LABEL "from generator and analyzer",1
100 MOVE 100,110: LABEL "inputs and outputs",1
110 PRINT "[22;7HAre you sure? - ";
120 PRINT "Continue with <ENTER> - break with any other key"
130 Key=0: INKEY Q$: Key=ASC(Q$): IF Key=0 THEN 130
140 IF Key=13 THEN 150 ELSE SOFTKEY : CLEAR : CLEAR 1: END 
150 CLEAR : CLEAR 1: UPL OUT "*rst": UPL OUT "disp:ann off"
160 UPL OUT "*opt?": UPL IN Q$
170 Opt$=Q$: B1=0: Dig=0: O33=0
180 IF LEN(Q$)=0 THEN 270
190 FOR I=LEN(Q$) TO 1 STEP -1
200 IF MID$(Q$,I,1)<>"," AND I>0 THEN NEXT 
210 B$=RIGHT$(Q$,(LEN(Q$)-I)): IF I>1 THEN Q$=LEFT$(Q$,(I-1))
220 Opt=VAL(RIGHT$(B$,(LEN(B$)-1)))
230 IF Opt=1 THEN B1=1
240 IF Opt=2 OR Opt=29 THEN Dig=1
250 IF Opt=33 THEN O33=1
260 IF I>0 THEN NEXT 
270 MOVE 35,390: LABEL "Selftest Program Audio Analyzer UPL",1
280 UPL OUT "DIAG:DEV SERN"
290 UPL OUT "DIAG:DEV:ADDR 0"
300 UPL OUT "DIAG:DEV:DATA?"
310 UPL IN Q$: Ser$=Q$
320 UPL OUT "DIAG:DEV:ADDR 1"
330 UPL OUT "DIAG:DEV:DATA?"
340 UPL IN Q$: Ser$=Ser$+"/"+Q$
350 PRINT "[2;0HSerial no: ";Ser$
360 PRINT "[3;0HInstalled options: ";Opt$
370 REM * basic settings                                        *
380 UPL OUT "SOUR:LOWD OFF"
390 UPL OUT "OUTP:TYPE BAL"
400 UPL OUT "SOUR:VOLT 1e-20 V"
410 UPL OUT "INP:SEL CH2I"
420 UPL OUT "INP:TYPE GEN2"
430 UPL OUT "SENS2:FUNC 'OFF'"
440 UPL OUT "SENS3:FUNC 'OFF'"
450 UPL OUT "CAL:ZERO:AUTO ONCE;*wai"
460 UPL OUT "INST2 A100"
470 UPL OUT "CAL:ZERO:AUTO ONCE;*wai"
480 UPL OUT "INST2 A22"
500 REM * test sequencing                                       *
510 Fail=0: Tb$=CHR$(9)
520 OPENO# 1,"Selftest.txt"
530 PRINT# 1,"Selftest Audio Analyzer UPL"
540 PRINT# 1,"Date: ";DATE$;Tb$;"Time: ";LEFT$(TIME$,8)
550 PRINT# 1,"Serial number: ";Ser$
560 PRINT# 1,"Installed options: ";Opt$
570 PRINT# 1
580 GOSUB 1000: 'generator range control
590 PRINT# 1
600 GOSUB 1420: 'low distortion generator
610 PRINT# 1
620 GOSUB 2000: 'analyzer ranges
630 PRINT# 1
640 GOSUB 4000: 'THD+N
650 PRINT# 1
660 GOSUB 5000: 'DFD
670 PRINT# 1
680 GOSUB 6000: 'Noise
690 PRINT# 1
700 GOSUB 7000: 'Digital audio
710 IF Fail>0 THEN
720 PRINT# 1: PRINT# 1,"Selftest failed!"
730   SET 2,3: MOVE 140,30: LABEL "SELFTEST FAILED",2: SET 2,15
740 ELSE 
750 PRINT# 1: PRINT# 1,"Selftest passed!"
760   SET 2,9: MOVE 140,30: LABEL "SELFTEST PASSED",2: SET 2,15
770 ENDIF 
780 CLOSE# 1: END 
1000 REM * generator range control                              *
1010 PRINT# 1,"Generator ranges"
1020 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/V";Tb$;
1030 PRINT# 1,"Dev/%";Tb$;"Tol/%"
1040 Fail1=0: Fail2=0
1050 UPL OUT "SENS:VOLT:RANG:AUTO OFF"
1060 UPL OUT "SENS:VOLT:RANG 3 V"
1070 Pl=5: Pc=35: Nb=6: GOSUB 10000: 'draw boxes
1080 Pl=6: Pc=35: Nb=6: GOSUB 10000
1090 PRINT "[5;2HGenerator ranges Channel 1:"
1100 PRINT "[6;2H                 Channel 2:"
1110 Volt=0.030: Tol=2: 'voltage in V, Tolerance in %
1120 GOSUB 9000: IF F1>0 THEN Fail1=1
1130 IF F2>0 THEN Fail2=1
1140 Pl=5: Pc=35: GOSUB 8000
1150 Volt=0.250: Tol=1.8: 'voltage in V, Tolerance in %
1160 GOSUB 9000: IF F1>0 THEN Fail1=1
1170 IF F2>0 THEN Fail2=1
1180 Pl=5: Pc=Pc+1: GOSUB 8000
1190 Volt=0.500: Tol=1.6: 'voltage in V, Tolerance in %
1200 GOSUB 9000: IF F1>0 THEN Fail1=1
1210 IF F2>0 THEN Fail2=1
1220 Pl=5: Pc=Pc+1: GOSUB 8000
1230 Volt=1.000: Tol=1.6: 'voltage in V, Tolerance in %
1240 GOSUB 9000: IF F1>0 THEN Fail1=1
1250 IF F2>0 THEN Fail2=1
1260 Pl=5: Pc=Pc+1: GOSUB 8000
1270 Volt=2.000: Tol=1.6: 'voltage in V, Tolerance in %
1280 GOSUB 9000: IF F1>0 THEN Fail1=1
1290 IF F2>0 THEN Fail2=1
1300 Pl=5: Pc=Pc+1: GOSUB 8000
1310 UPL OUT "SENS:VOLT:RANG 30 V"
1320 UPL OUT "SOUR:VOLT:LIM 20 V"
1330 Volt=20.000: Tol=1.6: 'voltage in V, Tolerance in %
1340 GOSUB 9000: IF F1>0 THEN Fail1=1
1350 IF F2>0 THEN Fail2=1
1360 Pl=5: Pc=Pc+1: GOSUB 8000
1370 UPL OUT "sour:volt 0 V"
1380 IF Fail1=1 THEN PRINT "["+Z1$+";60HFail" ELSE PRINT "["+Z1$+";60HPASS"
1390 IF Fail2=1 THEN PRINT "["+Z2$+";60HFail" ELSE PRINT "["+Z2$+";60HPASS"
1400 IF Fail1=1 OR Fail2=1 THEN Fail=1
1410 RETURN 
1420 REM * low distortion generator                             *
1425 IF B1=0 THEN RETURN 
1430 PRINT# 1,"Low distortion generator level and frequency"
1440 PRINT# 1,"Channel";Tb$;"Set";Tb$;"Meas";Tb$;
1450 PRINT# 1,"Dev/%";Tb$;"Tol/%"
1460 Fail1=0: Fail2=0
1470 UPL OUT "SENS3:FUNC 'FREQ'"
1480 UPL OUT "SENS:VOLT:RANG 3 V"
1490 PRINT "[7;2HLow Dist. Generator    Amp:"
1500 PRINT "[8;2H                      Freq:"
1560 UPL OUT "SOUR:LOWD ON"
1570 Pl=7: Pc=35: Nb=4: GOSUB 10000: 'draw boxes
1580 Pl=8: Pc=35: Nb=4: GOSUB 10000: 'draw boxes
1590 Volt=1.000: Freq=1000: Tol=1.6: Tfreq=0.8: 'voltage in V, Tolerance in %
1600 GOSUB 9300: IF F1>0 OR F2>0 THEN Fail1=1: F1=1
1610 Pl=7: Pc=35: GOSUB 8200
1620 IF Ff=1 THEN F1=1: Fail2=1 ELSE F1=0
1630 Pl=8: Pc=35: GOSUB 8200
1640 Volt=1.000: Freq=150: Tol=2.7: Tfreq=0.8: 'voltage in V, Tolerance in %
1650 UPL OUT "sour:freq "+STR$(Freq)+"HZ;*wai"
1660 GOSUB 9300: IF F1>0 OR F2>0 THEN Fail1=1: F1=1
1670 Pl=7: Pc=36: GOSUB 8200
1680 IF Ff=1 THEN F1=1: Fail2=1 ELSE F1=0
1690 Pl=8: Pc=36: GOSUB 8200
1700 Volt=1.000: Freq=5000: Tol=2.7: Tfreq=0.8: 'voltage in V, Tolerance in %
1710 UPL OUT "sour:freq "+STR$(Freq)+"HZ;*wai"
1720 GOSUB 9300: IF F1>0 OR F2>0 THEN Fail1=1: F1=1
1730 Pl=7: Pc=37: GOSUB 8200
1740 IF Ff=1 THEN F1=1: Fail2=1 ELSE F1=0
1750 Pl=8: Pc=37: GOSUB 8200
1760 Volt=1.000: Freq=25000: Tol=2.7: Tfreq=0.8: 'voltage in V, Tolerance in %
1770 UPL OUT "INST2 A100"
1780 UPL OUT "INP:SEL CH2I"
1790 UPL OUT "INP:TYPE GEN2"
1800 UPL OUT "SENS:VOLT:RANG:AUTO OFF"
1810 UPL OUT "SENS:VOLT:RANG 3 V"
1820 UPL OUT "SENS2:FUNC 'OFF'"
1830 UPL OUT "sour:freq "+STR$(Freq)+"HZ;*wai"
1840 GOSUB 9300: IF F1>0 OR F2>0 THEN Fail1=1: F1=1
1850 Pl=7: Pc=38: GOSUB 8200
1860 IF Ff=1 THEN F1=1: Fail2=1 ELSE F1=0
1870 Pl=8: Pc=38: GOSUB 8200
1880 Pl=7: Z1$=RIGHT$(STR$(Pl),(LEN(STR$(Pl))-1))
1890 Z2$=RIGHT$(STR$(Pl+1),(LEN(STR$(Pl+1))-1))
1900 IF Fail1=1 THEN PRINT "["+Z1$+";60HFail" ELSE PRINT "["+Z1$+";60HPASS"
1910 IF Fail2=1 THEN PRINT "["+Z2$+";60HFail" ELSE PRINT "["+Z2$+";60HPASS"
1920 UPL OUT "INST2 A22"
1930 IF Fail1=1 OR Fail2=1 THEN Fail=1
1940 RETURN 
2000 REM * analyzer ranges @ 1kHz                               *
2010 PRINT# 1,"Analyzer ranges @ 1kHz"
2020 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/V";Tb$;
2030 PRINT# 1,"Dev/%";Tb$;"Tol/%"
2040 Fail1=0: Fail2=0
2050 UPL OUT "SENS3:FUNC 'OFF'"
2060 UPL OUT "SOUR:LOWD OFF"
2070 UPL OUT "SOUR:VOLT:LIM 20 V"
2080 UPL OUT "OUTP:TYPE BAL"
2090 UPL OUT "SOUR:VOLT 1e-20 V"
2100 UPL OUT "INP:SEL CH2I"
2110 UPL OUT "INP:TYPE GEN2"
2120 UPL OUT "SENS2:FUNC 'OFF'"
2130 UPL OUT "SENS3:FUNC 'OFF'"
2140 UPL OUT "SENS:VOLT:RANG:AUTO OFF"
2150 UPL OUT "SENS:VOLT:RANG 3 V;*wai"
2160 Pl=9: Pc=35: Nb=16: GOSUB 10000: 'draw boxes
2170 Pl=10: Pc=35: Nb=16: GOSUB 10000
2180 PRINT "[9;2HAnalyzer ranges  Channel 1:"
2190 PRINT "[10;2H@ 1kHz           Channel 2:"
2200 Pl=9: Pc=34
2210 Volt=0.018: Tol=1.5: 'voltage in V, Tolerance in %
2220 GOSUB 3800
2230 Volt=0.030: Tol=1.5
2240 GOSUB 3800
2250 Volt=0.060: Tol=1.5
2260 GOSUB 3800
2270 Volt=0.100: Tol=1.5
2280 GOSUB 3800
2290 Volt=0.180: Tol=1.5
2300 GOSUB 3800
2310 Volt=0.300: Tol=1.5
2320 GOSUB 3800
2330 Volt=0.600: Tol=1.5
2340 GOSUB 3800
2350 Volt=1.000: Tol=1.5
2360 GOSUB 3800
2370 Volt=1.800: Tol=1.5
2380 GOSUB 3800
2390 Volt=3.000: Tol=1.5
2400 GOSUB 3800
2410 Volt=6.000: Tol=1.5
2420 GOSUB 3800
2430 Volt=10.000: Tol=1.5
2440 GOSUB 3800
2450 Volt=18.000: Tol=1.5
2460 GOSUB 3800
2470 UPL OUT "SENS:VOLT:RANG 30 V": Tol=1.6
2480 GOSUB 9000: IF F1>0 THEN Fail1=1
2490 IF F2>0 THEN Fail2=1
2500 Pc=Pc+1: GOSUB 8000
2510 UPL OUT "SENS:VOLT:RANG 60 V": Tol=1.6
2520 GOSUB 9000: IF F1>0 THEN Fail1=1
2530 IF F2>0 THEN Fail2=1
2540 Pc=Pc+1: GOSUB 8000
2550 UPL OUT "SENS:VOLT:RANG 100 V": Tol=1.8
2560 GOSUB 9000: IF F1>0 THEN Fail1=1
2570 IF F2>0 THEN Fail2=1
2580 Pc=Pc+1: GOSUB 8000
2590 UPL OUT "sour:volt 0 V": UPL OUT "init;*wai"
2600 IF Fail1=1 THEN PRINT "["+Z1$+";60HFail" ELSE PRINT "["+Z1$+";60HPASS"
2610 IF Fail2=1 THEN PRINT "["+Z2$+";60HFail" ELSE PRINT "["+Z2$+";60HPASS"
2620 IF Fail1=1 OR Fail2=1 THEN Fail=1
2630 REM * analyzer ranges @ 40Hz                               *
2640 PRINT# 1
2650 PRINT# 1,"Analyzer ranges @ 40Hz"
2660 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/V";Tb$;
2670 PRINT# 1,"Dev/%";Tb$;"Tol/%"
2680 Fail1=0: Fail2=0
2690 UPL OUT "SOUR:FREQ 40 HZ"
2700 Pl=11: Pc=35: Nb=16: GOSUB 10000: 'draw boxes
2710 Pl=12: Pc=35: Nb=16: GOSUB 10000
2720 PRINT "[11;2HAnalyzer ranges  Channel 1:"
2730 PRINT "[12;2H@ 40Hz           Channel 2:"
2740 Pl=11: Pc=34
2750 Volt=0.018: Tol=2.7: 'voltage in V, Tolerance in %
2760 GOSUB 3800
2770 Volt=0.030: Tol=2.7
2780 GOSUB 3800
2790 Volt=0.060: Tol=2.7
2800 GOSUB 3800
2810 Volt=0.100: Tol=2.7
2820 GOSUB 3800
2830 Volt=0.180: Tol=2.7
2840 GOSUB 3800
2850 Volt=0.300: Tol=2.7
2860 GOSUB 3800
2870 Volt=0.600: Tol=2.7
2880 GOSUB 3800
2890 Volt=1.000: Tol=2.7
2900 GOSUB 3800
2910 Volt=1.800: Tol=2.7
2920 GOSUB 3800
2930 Volt=3.000: Tol=2.7
2940 GOSUB 3800
2950 Volt=6.000: Tol=2.7
2960 GOSUB 3800
2970 Volt=10.000: Tol=2.7
2980 GOSUB 3800
2990 Volt=18.000: Tol=2.7
3000 GOSUB 3800
3010 UPL OUT "SENS:VOLT:RANG 30 V": Tol=2.7
3020 GOSUB 9000: IF F1>0 THEN Fail1=1
3030 IF F2>0 THEN Fail2=1
3040 Pc=Pc+1: GOSUB 8000
3050 UPL OUT "SENS:VOLT:RANG 60 V": Tol=2.8
3060 GOSUB 9000: IF F1>0 THEN Fail1=1
3070 IF F2>0 THEN Fail2=1
3080 Pc=Pc+1: GOSUB 8000
3090 UPL OUT "SENS:VOLT:RANG 100 V": Tol=3
3100 GOSUB 9000: IF F1>0 THEN Fail1=1
3110 IF F2>0 THEN Fail2=1
3120 Pc=Pc+1: GOSUB 8000
3130 UPL OUT "sour:volt 0 V": UPL OUT "init;*wai"
3140 IF Fail1=1 THEN PRINT "["+Z1$+";60HFail" ELSE PRINT "["+Z1$+";60HPASS"
3150 IF Fail2=1 THEN PRINT "["+Z2$+";60HFail" ELSE PRINT "["+Z2$+";60HPASS"
3160 IF Fail1=1 OR Fail2=1 THEN Fail=1
3170 REM * analyzer ranges @ 15kHz                              *
3180 PRINT# 1
3190 PRINT# 1,"Analyzer ranges @ 15kHz"
3200 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/V";Tb$;
3210 PRINT# 1,"Dev/%";Tb$;"Tol/%"
3220 Fail1=0: Fail2=0
3230 UPL OUT "SOUR:FREQ 15 KHZ;*wai"
3240 Pl=13: Pc=35: Nb=16: GOSUB 10000: 'draw boxes
3250 Pl=14: Pc=35: Nb=16: GOSUB 10000
3260 PRINT "[13;2HAnalyzer ranges  Channel 1:"
3270 PRINT "[14;2H@ 15kHz          Channel 2:"
3280 Pl=13: Pc=34
3290 Volt=0.018: Tol=2.7: 'voltage in V, Tolerance in %
3300 GOSUB 3800
3310 Volt=0.030: Tol=2.7
3320 GOSUB 3800
3330 Volt=0.060: Tol=2.7
3340 GOSUB 3800
3350 Volt=0.100: Tol=2.7
3360 GOSUB 3800
3370 Volt=0.180: Tol=2.7
3380 GOSUB 3800
3390 Volt=0.300: Tol=2.7
3400 GOSUB 3800
3410 Volt=0.600: Tol=2.7
3420 GOSUB 3800
3430 Volt=1.000: Tol=2.7
3440 GOSUB 3800
3450 Volt=1.800: Tol=2.7
3460 GOSUB 3800
3470 Volt=3.000: Tol=2.7
3480 GOSUB 3800
3490 Volt=6.000: Tol=2.7
3500 GOSUB 3800
3510 Volt=10.000: Tol=2.7
3520 GOSUB 3800
3530 Volt=18.000: Tol=2.7
3540 GOSUB 3800
3550 UPL OUT "SENS:VOLT:RANG 30 V": Tol=2.7
3560 GOSUB 9000: IF F1>0 THEN Fail1=1
3570 IF F2>0 THEN Fail2=1
3580 Pc=Pc+1: GOSUB 8000
3590 UPL OUT "SENS:VOLT:RANG 60 V": Tol=2.8
3600 GOSUB 9000: IF F1>0 THEN Fail1=1
3610 IF F2>0 THEN Fail2=1
3620 Pc=Pc+1: GOSUB 8000
3630 UPL OUT "SENS:VOLT:RANG 100 V": Tol=3
3640 GOSUB 9000: IF F1>0 THEN Fail1=1
3650 IF F2>0 THEN Fail2=1
3660 Pc=Pc+1: GOSUB 8000
3670 UPL OUT "sour:volt 0 V"
3680 IF Fail1=1 THEN PRINT "["+Z1$+";60HFail" ELSE PRINT "["+Z1$+";60HPASS"
3690 IF Fail2=1 THEN PRINT "["+Z2$+";60HFail" ELSE PRINT "["+Z2$+";60HPASS"
3700 IF Fail1=1 OR Fail2=1 THEN Fail=1
3710 RETURN 
3800 ' set range and run measurement
3810 UPL OUT "SENS:VOLT:RANG "+STR$(Volt)+"V"
3820 GOSUB 9000: IF F1>0 THEN Fail1=1
3830 IF F2>0 THEN Fail2=1
3840 Pc=Pc+1: GOSUB 8000
3850 RETURN 
4000 REM * analyzer inherent THD+N @ 1kHz                         *
4005 F1=0: F2=0: REM reset temporary error flag
4010 PRINT# 1,"Inherent THD+N @ 1kHz"
4020 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/dB";Tb$;
4030 PRINT# 1,"Dev/dB";Tb$;"Tol/dB"
4040 Fail1=0: Fail2=0
4050 Volt=2: Tol=-93: REM tolerance limit in dB
4060 UPL OUT "SOUR:FREQ 1 KHZ"
4070 UPL OUT "SENS:FUNC 'THDN'"
4080 UPL OUT "SOUR:VOLT "+STR$(Volt)+"V"
4090 UPL OUT "INP:SEL CH2I"
4100 UPL OUT "INP:TYPE GEN2"
4110 UPL OUT "SENS2:FUNC 'OFF'"
4120 UPL OUT "SENS3:FUNC 'OFF'"
4130 UPL OUT "SENS:VOLT:RANG:AUTO OFF"
4140 UPL OUT "SENS:VOLT:RANG 3 V;*wai"
4150 Pl=15: Pc=35: Nb=3: GOSUB 10000: 'draw boxes
4160 Pl=16: Pc=35: Nb=3: GOSUB 10000
4170 PRINT "[15;2HTHD+N            Channel 1:"
4180 PRINT "[16;2H@ 1kHz           Channel 2:"
4190 UPL OUT "init:cont off;*wai"
4200 UPL OUT "sens:data?": UPL IN Q$: W1=VAL(Q$)
4210 UPL OUT "sens:data2?": UPL IN Q$: W2=VAL(Q$)
4220 Pl=15: Pc=35
4230 IF W1>Tol THEN F1=1: Fail1=1
4240 IF W2>Tol THEN F2=1: Fail2=1
4250 GOSUB 8000
4260 W1$=STR$(W1,USING "-###.##")
4270 T1$="-": T2$="-"
4280 W2$=STR$(W2,USING "-###.##")
4290 PRINT# 1,"Ch1: ";Tb$;STR$(Volt,USING "##.###");Tb$;W1$;Tb$;T1$;
4300 PRINT# 1,Tb$;STR$(Tol);
4310 IF F1=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
4320 PRINT# 1,"Ch2: ";Tb$;STR$(Volt,USING "##.###");Tb$;W2$;Tb$;T2$;
4330 PRINT# 1,Tb$;STR$(Tol);
4340 IF F2=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
4350 PRINT# 1
4360 REM * analyzer THD+N @ 1kHz -60dB                         *
4365 F1=0: F2=0: REM reset temporary error flag
4370 PRINT# 1,"THD+N @ 1kHz -60dB"
4380 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/dB";Tb$;
4390 PRINT# 1,"Dev/dB";Tb$;"Tol/dB"
4400 Volt=2: Tol=0.5: REM tolerance limit in dB
4410 UPL OUT "SOUR:FUNC MULT"
4420 UPL OUT "SOUR:MULT:COUN 2"
4430 UPL OUT "SOUR:VOLT "+STR$(Volt)+"V"
4440 UPL OUT "SOUR:FREQ2 2000 HZ"
4450 UPL OUT "SOUR:VOLT2 "+STR$(Volt)+"MV;*wai"
4460 UPL OUT "init:cont off;*wai"
4470 UPL OUT "sens:data?": UPL IN Q$: W1=VAL(Q$)
4480 UPL OUT "sens:data2?": UPL IN Q$: W2=VAL(Q$)
4490 IF ABS(W1+60)>Tol THEN F1=1: Fail1=1
4500 IF ABS(W2+60)>Tol THEN F2=1: Fail2=1
4510 Pc=36: GOSUB 8000
4520 W1$=STR$(W1,USING "-###.##")
4530 T1$=STR$((W1+60),USING "-##.##")
4540 T2$=STR$((W2+60),USING "-##.##")
4550 W2$=STR$(W2,USING "-###.##")
4560 PRINT# 1,"Ch1: ";Tb$;STR$(Volt,USING "##.###");Tb$;W1$;Tb$;T1$;
4570 PRINT# 1,Tb$;STR$(Tol);
4580 IF F1=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
4590 PRINT# 1,"Ch2: ";Tb$;STR$(Volt,USING "##.###");Tb$;W2$;Tb$;T2$;
4600 PRINT# 1,Tb$;STR$(Tol);
4610 IF F2=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
4620 PRINT# 1
4630 REM * analyzer THD+N @ 1kHz 100 kHz analyzer              *
4635 F1=0: F2=0: REM reset temporary error flag
4640 PRINT# 1,"Inherent THD+N @ 1kHz in 100kHz analyzer"
4650 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/dB";Tb$;
4660 PRINT# 1,"Dev/dB";Tb$;"Tol/dB"
4670 Volt=2: Tol=-84: REM tolerance limit in dB
4680 UPL OUT "SOUR:FUNC SIN"
4690 UPL OUT "INST2 A100"
4700 UPL OUT "INP:SEL CH2I"
4710 UPL OUT "INP:TYPE GEN2"
4720 UPL OUT "SENS:VOLT:RANG:AUTO OFF"
4730 UPL OUT "SENS:VOLT:RANG 3 V"
4740 UPL OUT "SENS2:FUNC 'OFF'"
4750 UPL OUT "SENS3:FUNC 'OFF'"
4760 UPL OUT "SENS:FUNC 'THDN'"
4770 'UPL OUT "CAL:ZERO:AUTO ONCE;*wai"
4780 UPL OUT "init:cont off;*wai"
4790 UPL OUT "sens:data?": UPL IN Q$: W1=VAL(Q$)
4800 UPL OUT "sens:data2?": UPL IN Q$: W2=VAL(Q$)
4810 IF W1>Tol THEN F1=1: Fail1=1
4820 IF W2>Tol THEN F2=1: Fail2=1
4830 Pc=37: GOSUB 8000
4840 W1$=STR$(W1,USING "-###.##")
4850 T1$="-": T2$="-"
4860 W2$=STR$(W2,USING "-###.##")
4870 PRINT# 1,"Ch1: ";Tb$;STR$(Volt,USING "##.###");Tb$;W1$;Tb$;T1$;
4880 PRINT# 1,Tb$;STR$(Tol);
4890 IF F1=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
4900 PRINT# 1,"Ch2: ";Tb$;STR$(Volt,USING "##.###");Tb$;W2$;Tb$;T2$;
4910 PRINT# 1,Tb$;STR$(Tol);
4920 IF F2=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
4930 Z1$=RIGHT$(STR$(Pl),(LEN(STR$(Pl))-1))
4940 Z2$=RIGHT$(STR$(Pl+1),(LEN(STR$(Pl+1))-1))
4950 IF Fail1=1 THEN PRINT "["+Z1$+";60HFail" ELSE PRINT "["+Z1$+";60HPASS"
4960 IF Fail2=1 THEN PRINT "["+Z2$+";60HFail" ELSE PRINT "["+Z2$+";60HPASS"
4970 UPL OUT "INST2 A22"
4980 IF Fail1=1 OR Fail2=1 THEN Fail=1
4990 RETURN 
5000 REM * analyzer inherent D2 @ 10kHz                         *
5005 F1=0: F2=0: REM reset temporary error flag
5010 PRINT# 1,"Inherent D2 @ 1kHz"
5020 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/dB";Tb$;
5030 PRINT# 1,"Dev/dB";Tb$;"Tol/dB"
5040 Fail1=0: Fail2=0
5050 Volt=2: Tol=-110: REM tolerance limit in dB
5060 PRINT "[17;2HDFD D2 @ 10kHz      Ch 1/2:"
5070 Pl=17: Pc=35: Nb=2: GOSUB 10000
5080 UPL OUT "SOUR:FUNC DFD"
5090 UPL OUT "SOUR:FREQ:MEAN 10 KHZ"
5100 UPL OUT "SOUR:FREQ:DIFF 200 HZ"
5110 UPL OUT "SOUR:VOLT:TOT "+STR$(Volt)+"V"
5120 UPL OUT "SENS:FUNC 'DFD';*wai"
5130 UPL OUT "init:cont off;*wai"
5140 UPL OUT "sens:data?": UPL IN Q$: W1=VAL(Q$)
5150 UPL OUT "sens:data2?": UPL IN Q$: W2=VAL(Q$)
5160 IF W1>Tol THEN F1=1: Fail1=1
5170 IF W2>Tol THEN F2=1: Fail2=1
5180 Pl=17: GOSUB 8100
5190 Z1$=RIGHT$(STR$(Pl),(LEN(STR$(Pl))-1))
5195 IF Fail1=1 OR Fail2=1 THEN Fail=1
5200 IF F1=1 OR F2=1 THEN
5210  PRINT "["+Z1$+";60HFail"
5220 ELSE 
5230  PRINT "["+Z1$+";60HPASS"
5240 ENDIF 
5260 W1$=STR$(W1,USING "-###.##")
5270 W2$=STR$(W2,USING "-###.##")
5280 T1$="-": T2$="-"
5290 PRINT# 1,"Ch1: ";Tb$;STR$(Volt,USING "##.###");Tb$;W1$;Tb$;T1$;
5300 PRINT# 1,Tb$;STR$(Tol);
5310 IF F1=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
5320 PRINT# 1,"Ch2: ";Tb$;STR$(Volt,USING "##.###");Tb$;W2$;Tb$;T2$;
5330 PRINT# 1,Tb$;STR$(Tol);
5340 IF F2=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
5350 RETURN 
6000 REM * analyzer inherent noise 22 kHz analyzer             *
6005 F1=0: F2=0: REM reset temporary error flag
6010 PRINT# 1,"Inherent noise 22kHz analyzer"
6020 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/";CHR$(230);"V";Tb$;
6030 PRINT# 1,"Dev/%";Tb$;"Tol/";CHR$(230);"V"
6040 Fail1=0: Fail2=0
6050 Volt=0: Tol=2: REM tolerance limit noise in uV
6060 PRINT "[18;2HInherent noise   Channel 1:"
6070 PRINT "[19;2H                 Channel 2:"
6080 Pl=18: Pc=35: Nb=2: GOSUB 10000
6090 Pl=19: Pc=35: Nb=2: GOSUB 10000
6100 UPL OUT "SOUR:FUNC SIN"
6110 UPL OUT "SOUR:VOLT 0 V"
6120 UPL OUT "SENS:FUNC 'RMS'"
6122 UPL OUT "INP:TYPE BAL"
6124 UPL OUT "INP:IMP R300"
6130 UPL OUT "SENS:VOLT:RANG 18 MV;*wai"
6140 Rep=0
6150 UPL OUT "init:cont off;*wai"
6160 UPL OUT "sens:data?": UPL IN Q$: W1=1E6*VAL(Q$)
6170 UPL OUT "sens:data2?": UPL IN Q$: W2=1E6*VAL(Q$)
6180 IF (W1>Tol OR W2>Tol) AND Rep<3 THEN Rep=Rep+1: GOTO 6150
6190 IF W1>Tol THEN F1=1: Fail1=1
6200 IF W2>Tol THEN F2=1: Fail2=1
6210 Pl=18: Pc=35: GOSUB 8000
6220 W1$=STR$(W1,USING "##.#")
6230 W2$=STR$(W2,USING "##.#")
6240 T1$="-": T2$="-"
6250 PRINT# 1,"Ch1: ";Tb$;STR$(Volt,USING "#.#");Tb$;W1$;Tb$;T1$;
6260 PRINT# 1,Tb$;STR$(Tol);
6270 IF F1=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
6280 PRINT# 1,"Ch2: ";Tb$;STR$(Volt,USING "#.#");Tb$;W2$;Tb$;T2$;
6290 PRINT# 1,Tb$;STR$(Tol);
6300 IF F2=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
6310 PRINT# 1
6320 REM * analyzer inherent noise 110 kHz analyzer            *
6325 F1=0: F2=0: REM reset temporary error flag
6330 PRINT# 1,"Inherent noise 100kHz analyzer"
6340 PRINT# 1,"Channel";Tb$;"Set/V";Tb$;"Meas/";CHR$(230);"V";Tb$;
6350 PRINT# 1,"Dev/%";Tb$;"Tol/";CHR$(230);"V"
6360 Volt=0: Tol=8: REM tolerance limit noise in uV
6370 UPL OUT "INST2 A100"
6380 UPL OUT "SOUR:VOLT 0 V"
6390 UPL OUT "SENS:FUNC 'RMS'"
6392 UPL OUT "INP:TYPE BAL"
6394 UPL OUT "INP:IMP R300"
6400 UPL OUT "SENS:VOLT:RANG 18 MV;*wai"
6410 Rep=0
6420 UPL OUT "init:cont off;*wai"
6430 UPL OUT "sens:data?": UPL IN Q$: W1=1E6*VAL(Q$)
6440 UPL OUT "sens:data2?": UPL IN Q$: W2=1E6*VAL(Q$)
6450 IF (W1>Tol OR W2>Tol) AND Rep<3 THEN Rep=Rep+1: GOTO 6420
6460 IF W1>Tol THEN F1=1: Fail1=1
6470 IF W2>Tol THEN F2=1: Fail2=1
6480 Pl=18: Pc=36: GOSUB 8000
6500 Z1$=RIGHT$(STR$(Pl),(LEN(STR$(Pl))-1))
6510 Z2$=RIGHT$(STR$(Pl+1),(LEN(STR$(Pl+1))-1))
6520 IF Fail1=1 THEN PRINT "["+Z1$+";60HFail" ELSE PRINT "["+Z1$+";60HPASS"
6530 IF Fail2=1 THEN PRINT "["+Z2$+";60HFail" ELSE PRINT "["+Z2$+";60HPASS"
6540 IF Fail1=1 OR Fail2=1 THEN Fail=1
6550 W1$=STR$(W1,USING "##.#")
6560 W2$=STR$(W2,USING "##.#")
6570 T1$="-": T2$="-"
6580 PRINT# 1,"Ch1: ";Tb$;STR$(Volt,USING "#.#");Tb$;W1$;Tb$;T1$;
6590 PRINT# 1,Tb$;STR$(Tol);
6600 IF F1=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
6610 PRINT# 1,"Ch2: ";Tb$;STR$(Volt,USING "#.#");Tb$;W2$;Tb$;T2$;
6620 PRINT# 1,Tb$;STR$(Tol);
6630 IF F2=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
6640 RETURN 
7000 REM * digital audio                                        *
7005 F1=0: F2=0: REM reset temporary error flag
7010 IF Dig=0 THEN RETURN : REM no digital audio
7020 PRINT# 1,"Digital audio"
7030 PRINT# 1,"Channel";Tb$;"Set";Tb$;"Meas";Tb$;
7040 PRINT# 1,"Dev/%";Tb$;"Tol/%"
7050 Volt=0.5: Tol=0.1: Freq=1000: Tfreq=0.01
7060 Fail1=0: Fail2=0
7070 UPL OUT "INST D48"
7080 UPL OUT "INST2 D48"
7090 UPL OUT "INP:SEL BOTH"
7100 UPL OUT "INP:TYPE INT"
7110 UPL OUT "OUTP:AUD 24"
7120 UPL OUT "INP:AUD 24"
7130 UPL OUT "SENS2:FUNC 'OFF'"
7140 PRINT "[20;2HDigital audio:"
7150 Pl=20: Pc=35: Nb=5: GOSUB 10000
7160 UPL OUT "init:cont off;*wai"
7170 UPL OUT "sens:data?": UPL IN Q$: W1=VAL(Q$)
7180 UPL OUT "sens:data2?": UPL IN Q$: W2=VAL(Q$)
7190 UPL OUT "sens3:data?": UPL IN Q$: Wf=VAL(Q$)
7200 T1=100*(W1-Volt)/Volt: T2=100*(W2-Volt)/Volt: Tf=100*(Wf-Freq)/Freq
7210 IF ABS(T1)>Tol THEN F1=1: Fail=1 ELSE F1=0
7220 IF ABS(T2)>Tol THEN F2=1: Fail=1 ELSE F2=0
7230 Pl=20: Pc=35: GOSUB 8100
7240 IF ABS(Tf)>Tfreq THEN Ff=1 ELSE Ff=0
7250 IF Ff=1 THEN F1=1: Fail1=1
7260 Pl=20: Pc=37: GOSUB 8200
7270 W1$=STR$(W1,USING "#.######")
7280 W2$=STR$(W2,USING "#.######")
7290 T1$=STR$(T1,USING "-#.###")
7300 T2$=STR$(T2,USING "-#.###")
7310 Wf$=STR$(Wf,USING "####.###")
7320 Tf$=STR$(Tf,USING "-#.###")
7330 Tfreq$=STR$(Tfreq,USING "#.###")
7340 PRINT# 1,"Amp/Fs Ch1: ";Tb$;STR$(Volt,USING "##.###");Tb$;W1$;Tb$;T1$;
7350 PRINT# 1,Tb$;STR$(Tol);
7360 IF F1=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
7370 PRINT# 1,"Amp/Fs Ch2: ";Tb$;STR$(Volt,USING "##.###");Tb$;W2$;Tb$;T2$;
7380 PRINT# 1,Tb$;STR$(Tol);
7390 IF F2=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
7400 PRINT# 1,"Freq/Hz: ";Tb$;STR$(Freq);Tb$;Wf$;Tb$;Tf$;Tb$;Tfreq$;
7410 IF Ff=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
7420 UPL OUT "SENS3:FUNC 'SFRE'"
7430 Freq=48000: Tfreq=0.01
7440 UPL OUT "init:cont off;*wai"
7450 UPL OUT "sens3:data?": UPL IN Q$: Wf=VAL(Q$)
7460 Tf=100*(Wf-Freq)/Freq
7470 IF ABS(Tf)>Tfreq THEN Ff=1 ELSE Ff=0
7480 IF Ff=1 THEN F1=1: Fail1=1
7490 Pl=20: Pc=38: GOSUB 8200
7500 Wf$=STR$(Wf,USING "#####.#")
7510 Tf$=STR$(Tf,USING "-#.###")
7520 Tfreq$=STR$(Tfreq,USING "#.###")
7530 PRINT# 1,"Samplefreq/Hz: ";Tb$;STR$(Freq);Tb$;Wf$;Tb$;Tf$;Tb$;Tfreq$;
7540 IF Ff=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
7550 UPL OUT "INP:SAMP:FREQ:MODE AUTO"
7560 UPL OUT "OUTP:SAMP:MODE F44"
7570 Freq=44100: Tfreq=0.01
7580 UPL OUT "init:cont off;*wai"
7590 UPL OUT "sens3:data?": UPL IN Q$: Wf=VAL(Q$)
7600 Tf=100*(Wf-Freq)/Freq
7610 IF ABS(Tf)>Tfreq THEN Ff=1 ELSE Ff=0
7620 IF Ff=1 THEN F1=1: Fail1=1
7630 Pl=20: Pc=39: GOSUB 8200
7640 Wf$=STR$(Wf,USING "#####.#")
7650 Tf$=STR$(Tf,USING "-#.###")
7660 Tfreq$=STR$(Tfreq,USING "#.###")
7670 PRINT# 1,"Samplefreq/Hz: ";Tb$;STR$(Freq);Tb$;Wf$;Tb$;Tf$;Tb$;Tfreq$;
7680 IF Ff=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
7690 Z1$=RIGHT$(STR$(Pl),(LEN(STR$(Pl))-1))
7700 IF F1=1 THEN PRINT "["+Z1$+";60HFail" ELSE PRINT "["+Z1$+";60HPASS"
7710 IF Fail1=1 OR Fail2=1 THEN Fail=1
7720 RETURN 
8000 ' draw tolerance marks ch1 and ch2 in 2 lines
8010 Z1$=RIGHT$(STR$(Pl),(LEN(STR$(Pl))-1))
8020 Z2$=RIGHT$(STR$(Pl+1),(LEN(STR$(Pl+1))-1))
8030 C$=RIGHT$(STR$(Pc),(LEN(STR$(Pc))-1))
8040 IF F1=0 THEN PRINT "["+Z1$+";"+C$+"H+" ELSE PRINT "["+Z1$+";"+C$+"H?"
8050 IF F2=0 THEN PRINT "["+Z2$+";"+C$+"H+" ELSE PRINT "["+Z2$+";"+C$+"H?"
8060 RETURN 
8100 ' draw tolerance marks ch1 and ch2 in one line
8110 Z1$=RIGHT$(STR$(Pl),(LEN(STR$(Pl))-1))
8120 C$=RIGHT$(STR$(Pc),(LEN(STR$(Pc))-1))
8130 C2$=RIGHT$(STR$(Pc+1),(LEN(STR$(Pc+1))-1))
8140 IF F1=0 THEN PRINT "["+Z1$+";"+C$+"H+" ELSE PRINT "["+Z1$+";"+C$+"H?"
8150 IF F2=0 THEN PRINT "["+Z1$+";"+C2$+"H+" ELSE PRINT "["+Z1$+";"+C2$+"H?"
8160 RETURN 
8200 ' draw only one tolerance mark
8210 Z1$=RIGHT$(STR$(Pl),(LEN(STR$(Pl))-1))
8220 C$=RIGHT$(STR$(Pc),(LEN(STR$(Pc))-1))
8240 IF F1=0 THEN PRINT "["+Z1$+";"+C$+"H+" ELSE PRINT "["+Z1$+";"+C$+"H?"
8260 RETURN 
9000 ' measure and read value, returns W1,W2,T1,T2,F1,F2
9010 UPL OUT "sour:volt "+STR$(Volt)+" V;*wai"
9020 UPL OUT "init:cont off;*wai"
9030 UPL OUT "sens:data?": UPL IN Q$: W1=VAL(Q$)
9040 UPL OUT "sens:data2?": UPL IN Q$: W2=VAL(Q$)
9050 T1=100*(W1-Volt)/Volt: T2=100*(W2-Volt)/Volt
9060 IF ABS(T1)>Tol THEN F1=1 ELSE F1=0
9070 IF ABS(T2)>Tol THEN F2=1 ELSE F2=0
9080 W1$=STR$(W1,USING "#.######")
9090 IF W1>1 THEN W1$=STR$(W1,USING "##.#####")
9100 IF W1>10 THEN W1$=STR$(W1,USING "###.####")
9110 W2$=STR$(W2,USING "#.######")
9120 IF W2>1 THEN W2$=STR$(W2,USING "##.#####")
9130 IF W2>10 THEN W2$=STR$(W2,USING "###.####")
9140 T1$=STR$(T1,USING "-##.##")
9150 T2$=STR$(T2,USING "-##.##")
9170 PRINT# 1,"Ch1: ";Tb$;STR$(Volt,USING "##.###");Tb$;W1$;Tb$;T1$;
9180 PRINT# 1,Tb$;STR$(Tol);
9190 IF F1=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
9200 PRINT# 1,"Ch2: ";Tb$;STR$(Volt,USING "##.###");Tb$;W2$;Tb$;T2$;
9210 PRINT# 1,Tb$;STR$(Tol);
9220 IF F2=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
9230 RETURN 
9300 ' measure and read value amp and freq, returns W1,W2,Wf,T1,T2;Tf,F1,F2,Ff
9310 UPL OUT "sour:volt "+STR$(Volt)+" V;*wai"
9320 UPL OUT "init:cont off;*wai"
9330 UPL OUT "sens:data?": UPL IN Q$: W1=VAL(Q$)
9340 UPL OUT "sens:data2?": UPL IN Q$: W2=VAL(Q$)
9350 UPL OUT "sens3:data?": UPL IN Q$: Wf=VAL(Q$)
9360 T1=100*(W1-Volt)/Volt: T2=100*(W2-Volt)/Volt: Tf=100*(Wf-Freq)/Freq
9370 IF ABS(T1)>Tol THEN F1=1 ELSE F1=0
9380 IF ABS(T2)>Tol THEN F2=1 ELSE F2=0
9390 IF ABS(Tf)>Tfreq THEN Ff=1 ELSE Ff=0
9400 W1$=STR$(W1,USING "#.######")
9410 IF W1>1 THEN W1$=STR$(W1,USING "##.#####")
9420 IF W1>10 THEN W1$=STR$(W1,USING "###.####")
9430 W2$=STR$(W2,USING "#.######")
9440 IF W2>1 THEN W2$=STR$(W2,USING "##.#####")
9450 IF W2>10 THEN W2$=STR$(W2,USING "###.####")
9460 T1$=STR$(T1,USING "-##.##")
9470 T2$=STR$(T2,USING "-##.##")
9480 Wf$=STR$(Wf,USING "###.###")
9490 IF Wf>1000 THEN Wf$=STR$(Wf,USING "####.##")
9500 IF Wf>10000 THEN Wf$=STR$(Wf,USING "#####.#")
9510 Tf$=STR$(Tf,USING "-##.##")
9520 PRINT# 1,"Amp/V Ch1: ";Tb$;STR$(Volt,USING "##.###");Tb$;W1$;Tb$;T1$;
9530 PRINT# 1,Tb$;STR$(Tol);
9540 IF F1=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
9550 PRINT# 1,"Amp/V Ch2: ";Tb$;STR$(Volt,USING "##.###");Tb$;W2$;Tb$;T2$;
9560 PRINT# 1,Tb$;STR$(Tol);
9570 IF F2=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
9580 PRINT# 1,"Freq/Hz: ";Tb$;STR$(Freq);Tb$;Wf$;Tb$;Tf$;Tb$;STR$(Tfreq);
9590 IF Ff=0 THEN PRINT# 1,Tb$;"Pass" ELSE PRINT# 1,Tb$;"Fail"
9600 RETURN 
10000 REM ****************************************************************
10010 REM * Draw grid                                                    *
10020 REM * Pl=line position   Pc=start character position   Nb=number   *
10030 REM ****************************************************************
10040 SET 2,1
10050 FOR I=1 TO Nb+1
10060 MOVE ((Pc+I-1)*8-1),399-Pl*16: DRAW ((Pc+I-1)*8-1),385-Pl*16
10070 NEXT 
10080 MOVE ((Pc)*8-1),399-Pl*16: DRAW ((Pc+Nb)*8-1),399-Pl*16
10090 MOVE ((Pc)*8-1),385-Pl*16: DRAW ((Pc+Nb)*8),385-Pl*16
10100 SET 1,1: RETURN 
